import React, { Dispatch, HTMLAttributes, SetStateAction, useMemo } from 'react'; import styled from 'styled-components'; import { CommonStyle } from '../common/common'; type Ctx = | { setOrder: Dispatch>; defaultOrder: number; } | { setOrder: null; defaultOrder: null }; export const menuCtx = React.createContext(null!); export interface MenuProps extends HTMLAttributes { bgc?: string; justify?: 'center' | 'start' | 'end' | 'space-between' | 'space-around'; children?: React.ReactNode; setOrder?: Dispatch> | null; defaultOrder?: number | null; } type PropsStyled = { bgc?: string }; const MenuStyled = styled(CommonStyle)` background-color: ${(props: PropsStyled) => (props.bgc ? 'bgc' : 'inherit')}; display: flex; gap: 120px; align-items: center; min-height: 40px; position: relative; padding: 0 50px; `; const Menu: React.FC = (props) => { const { children, bgc, setOrder, defaultOrder, ...rest } = props; const value = useMemo(() => { if (setOrder && defaultOrder) { return { setOrder, defaultOrder }; } return { setOrder: null, defaultOrder: null }; }, [defaultOrder]); return ( {children} ); }; Menu.defaultProps = { bgc: 'inherit', justify: 'center', children: '', setOrder: null, defaultOrder: null }; export default Menu;